home *** CD-ROM | disk | FTP | other *** search
-
- /***************************************************************************/
- /** Francisco Javier Trujillo Horcas *************** 23 de Julio de 1992 **/
- /***************************************************************************/
- /* Este fichero permite la representación del conjunto de Mandelbrot **/
- /* y de sucesivas ampliaciones de una centesima parte de la imagen inicial.*/
- /***************************************************************************/
-
-
- #include <graphics.h>
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <bios.h>
- #include <teclas.h>
- #include <dos.h>
- #include <ctype.h>
- #include <math.h>
- #include <dir.h>
- #define BEEP_CORTO sound(600);delay(200);nosound()
-
- void graba_dibujo(void);
- /*Graba un fichero .IMG, imágen de una fractal.*/
-
- void guarda_config(void);
- /*Graba la situación del programa en un momento dado.*/
-
- void repone_config(void);
- /*Repone una determinada situación del programa, ya grabada.*/
-
- void salida(char texto [80]);
- /*Gestiona la salida del programa.*/
-
- char
- bucle_cad [3]="1";/*Contiene la cadena del número de imagen.*/
-
- unsigned char
- frac[30000], /*Array que sirve para multiples almacenamientos.*/
- limpia_texto[6500]; /*Limpia la linea de estado.*/
-
- int
- cuenta_vueltas=1, /*Impide que el bucle tape a la primera imagen.*/
- x_ventana=5, /*Mantienen las posicion X e Y de cada imagen.*/
- y_ventana=30,
- bucle=1; /*Controla el número de bucles hasta 20.*/
-
- unsigned
- num_char; /*Contiene el número de elementos de frac.*/
-
- double
- x_margen=-2, /*Contienen X e Y de la mirilla a representar.*/
- y_margen=-2,
- intervalo=0.02, /*Mantiene el intervalo de ajuste para cada punto.*/
- ajuste_punto=50; /*Ajusta el intervalo, para nuevos margenes.*/
-
- FILE
- *archivo; /*Gestiona todos los ficheros del programa.*/
-
- union
- {
- int i;
- char c;
- } tecla_pulsada; /*Gestiona las pulsaciones del teclado.*/
-
-
- /***************************************************************************/
-
-
- void main(int argc,char *argv[])
- {
- register
- x_pixel, /*Contienen la posicion X e Y de pixels de la imagen.*/
- y_pixel;
-
- int
- driver=VGA, /*Carga el Driver para el modo grafico VGA.*/
- modo=VGAHI, /*Fuerza el modo grafico VGA de 640*480*/
- conta_color, /*Proporciona el color de cada pixel de la imagen.*/
- num; /*Establece el número de comprobaciones por punto.*/
-
- double
- x_result, /*Contienen el resultado de la X e Y de la función.*/
- y_result,
- x_rec, /*Mantienen la coordenada X e Y al mover la mirilla.*/
- y_rec,
- x_dato, /*Almacenan los resultados de la función temporalmente.*/
- y_dato,
- x_coord=0, /*Contienen la coordenada X e Y de cada punto.*/
- y_coord=0;
-
- /***************************************************************************/
- /* Prepara la pantalla de presentación y gestiona los argumentos de entrada*/
- /***************************************************************************/
-
- switch(argc)
- {
- case 1:
- num=200;
- break;
- case 2:
- num=atoi(argv[1]);
- break;
- default:
- salida("Sólo puede introducir un argumento, pruebe de nuevo.\n\n");
- break;
- };
-
- if ((num>2000)||(num<10))
- salida("El argumento esta fuera de margen. Debe estar entre los valores 10 y 2000.\n\n");
-
- /***************************************************************************/
-
- clrscr();
-
- registerbgifont(triplex_font);
- registerbgifont(gothic_font);
- registerbgifont(DEFAULT_FONT);
- registerbgidriver(EGAVGA_driver);
-
- initgraph(&driver, &modo,"");
-
- settextstyle(GOTHIC_FONT,0,10);
- setcolor(9);
- outtextxy(130,120,"Fractal");
- settextstyle(DEFAULT_FONT,0,0);
- setcolor(14);
- settextstyle(TRIPLEX_FONT,0,8);
- outtextxy(40,20,"T");
- setcolor(9);
- circle(60,60,40);
- settextstyle(DEFAULT_FONT,0,1);
- setcolor(15);
- outtextxy(100,300,"Javier Trujillo-1992");
- outtextxy(230,450,"Pulse INTRO para continuar.");
-
- while((tecla_pulsada.i=bioskey(0))!=INTRO)
- putch('\a');
-
- setwritemode(1);
- setviewport(5,0,639,479,1);
- getimage(1,465,628,475,limpia_texto);
-
-
- /***************************************************************************/
- /* Presenta la primera imagen junto con la pantalla de trabajo */
- /***************************************************************************/
-
-
- cleardevice();
- rectangle(0,5,629,20);
- rectangle(0,25,629,477);
- rectangle(4,29,205,230);
- rectangle(214,29,415,230);
- rectangle(424,29,625,230);
- rectangle(4,249,205,450);
- rectangle(214,249,415,450);
- rectangle(424,249,625,450);
- line(1,462,628,462);
- setcolor(9);
-
- num_char=(imagesize(0,0,199,199)/sizeof(char));
-
- if((archivo = fopen("imagen1.dib","rb"))==NULL)
- salida("No se puede abrir el fichero de la primera imágen, compruebe que existe.\n\n");
- if(fread(frac, sizeof(char) ,num_char,archivo)!=num_char)
- {
- if(feof(archivo))
- salida("Fin de fichero prematuro al leer el archivo de la primera imágen.\n\n");
- else
- salida("Error de lectura en el archivo de la primera imágen.\n\n");
- };
- putimage(5,30,frac,0);
- fclose(archivo);
-
- rectangle(x_ventana+5,y_ventana+204,x_ventana+9,y_ventana+208);
- outtextxy(1,9," Imágen nº FRACTAL Javier Trujillo-1992");
- outtextxy(100,9,bucle_cad);
-
- /**************************************************************************/
- /* Inicia el bucle principal del programa y gestiona las teclas pulsadas */
- /**************************************************************************/
-
-
- for (;;)
- {
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," F2-Guardar F3-Reponer F5-Elegir Mirilla F8-Grabar Imágen F10-Salir al DOS");
-
- for(;;)
- {
- tecla_pulsada.i=bioskey(0);
- x_rec=89;
- y_rec=89;
- if ((tecla_pulsada.i==ESCAPE)||(tecla_pulsada.i==INTRO))
- tecla_pulsada.i=1;
- if (tecla_pulsada.c==0)
- {
- switch(tecla_pulsada.i)
- {
- case F3:
- repone_config();
- break;
-
- case F2:
- guarda_config();
- break;
-
- case F8:
- graba_dibujo();
- break;
-
- case F10:
- putimage(1,465,limpia_texto,0);
- setcolor(11);
- outtextxy(1,466," ¿Realmente desea salir?...");
- setcolor(9);
- outtextxy(1,466," F10-Salir al DOS ESCAPE-Cancelar Operación ");
- while ((tecla_pulsada.i=bioskey(0))!=ESCAPE)
- {
- if (tecla_pulsada.i==F10)
- salida("¡Hasta pronto!\n\n");
- else
- putch('\a');
- };
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," F2-Guardar F3-Reponer F5-Elegir Mirilla F8-Grabar Imágen F10-Salir al DOS");
- break;
-
- case F5:
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," CURSORES-Mover la Mirilla INTRO-Presentar la imágen ESCAPE-Cancelar ");
- rectangle(x_ventana+x_rec-1,y_ventana+y_rec-1,x_ventana+x_rec+21,y_ventana+y_rec+21);
- while ((tecla_pulsada.i=bioskey(0))!=INTRO)
- {
- if (tecla_pulsada.c==0)
- {
- rectangle(x_ventana+x_rec-1,y_ventana+y_rec-1,x_ventana+x_rec+21,y_ventana+y_rec+21);
- switch(tecla_pulsada.i)
- {
- case CURSOR_ARRIBA:
- if(y_rec>1) --y_rec;
- break;
- case CURSOR_DERECHA:
- if(x_rec<178) ++x_rec;
- break;
- case CURSOR_ABAJO:
- if(y_rec<178) ++y_rec;
- break;
- case CURSOR_IZQUIERDA:
- if(x_rec>1) --x_rec;
- break;
- default:
- putch('\a');
- break;
- };
- rectangle(x_ventana+x_rec-1,y_ventana+y_rec-1,x_ventana+x_rec+21,y_ventana+y_rec+21);
- }
- else
- if ((tecla_pulsada.i!=INTRO)&&(tecla_pulsada.i!=ESCAPE))
- putch('\a');
- if (tecla_pulsada.i==ESCAPE)
- {
- rectangle(x_ventana+x_rec-1,y_ventana+y_rec-1,x_ventana+x_rec+21,y_ventana+y_rec+21);
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," F2-Guardar F3-Reponer F5-Elegir Mirilla F8-Grabar Imágen F10-Salir al DOS");
- break;
- };
- };
- switch(tecla_pulsada.i)
- {
- case ESCAPE:
- case INTRO:
- break;
- default:
- putch('\a');
- break;
- };
- };
- };
- if (tecla_pulsada.i==INTRO)
- {
- bucle++;
- x_rec++; /*Ajuste para representar la mirilla exactamente.*/
- y_rec++;
- if (bucle>30)
- {
- setcolor(11);
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," Ha alcanzado el máximo de 30 imágenes que permite el programa. ");
- putch('\a');
- delay(2500);
- setcolor(9);
- rectangle(x_ventana+x_rec-2,y_ventana+y_rec-2,x_ventana+x_rec+20,y_ventana+y_rec+20);
- tecla_pulsada.i=ESCAPE;
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," F2-Guardar F3-Reponer F5-Elegir Mirilla F8-Grabar Imágen F10-Salir al DOS");
- }
- else
- {
- itoa(bucle,bucle_cad,10);
- putimage(1,8,limpia_texto,0);
- outtextxy(1,9," Imágen nº FRACTAL Javier Trujillo-1992");
- outtextxy(100,9,bucle_cad);
- rectangle(x_ventana+5,y_ventana+204,x_ventana+9,y_ventana+208);
- if (bucle<31)
- break;
- };
- }
- else
- {
- switch(tecla_pulsada.i)
- {
- case ESCAPE:
- case 0:
- break;
- default:
- putch ('\a');
- };
- };
- };
-
-
- /***************************************************************************/
- /* reajusta algunas variables con nuevos valores para otra representación */
- /***************************************************************************/
-
-
- x_margen=x_margen+(x_rec/ajuste_punto);
- y_margen=y_margen+(y_rec/ajuste_punto);
-
- intervalo/=10;
- ajuste_punto*=10;
-
-
- /***************************************************************************/
- /******* Proporciona las coordenadas de cada una de las 6 ventanas *********/
- /***************************************************************************/
-
-
- switch(cuenta_vueltas)
- {
- case 0:
- x_ventana=5;y_ventana=30;break;
- case 1:
- x_ventana=215;y_ventana=30;break;
- case 2:
- x_ventana=425;y_ventana=30;break;
- case 3:
- x_ventana=5;y_ventana=250;break;
- case 4:
- x_ventana=215;y_ventana=250;break;
- case 5:
- x_ventana=425;y_ventana=250;cuenta_vueltas=-1;break;
- };
-
- ++cuenta_vueltas;
- rectangle(x_ventana+5,y_ventana+204,x_ventana+9,y_ventana+208);
-
-
- /***************************************************************************/
- /* gestiona la representación de cada pixel de una imagen con un bucle */
- /***************************************************************************/
-
-
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," Creando una nueva imágen... F4-Interrumpir Creación ");
- x_coord=0;
- for (x_pixel=0; x_pixel<200; x_pixel++)
- {
- x_coord+=intervalo;
- y_coord=0;
- for (y_pixel=0; y_pixel<200; y_pixel++)
- {
- y_coord+=intervalo;
- conta_color=0;
- x_result=0;
- y_result=0;
- do
- {
- if (kbhit())
- {
- tecla_pulsada.i=bioskey(0);
- if (tecla_pulsada.c==0)
- {
- if (tecla_pulsada.i==F4)
- {
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," F4-Interrumpir creación F10-Salir al DOS ESCAPE-Cancelar operación");
- while ((tecla_pulsada.i=bioskey(0))!=ESCAPE)
- {
- if(tecla_pulsada.c==0)
- {
- switch(tecla_pulsada.i)
- {
- case F4:
- goto rompe_bucle;
- case F10:
- putimage(1,465,limpia_texto,0);
- setcolor(11);
- outtextxy(1,466," ¿Realmente desea salir?...");
- setcolor(9);
- outtextxy(1,466," F10-Salir al DOS ESCAPE-Cancelar Operación ");
- while ((tecla_pulsada.i=bioskey(0))!=ESCAPE)
- {
- if (tecla_pulsada.i==F10)
- salida("¡Hasta pronto!\n\n");
- else
- putch('\a');
- };
- break;
- default:
- putch('\a');
- break;
- };
- }else
- putch('\a');
- if (tecla_pulsada.i==ESCAPE)
- break;
- };
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," Creando una nueva imágen... F4-Interrumpir Creación ");
- }else
- putch('\a');
- }else
- putch('\a');
- };
- conta_color++;
- x_dato=((x_result*x_result)-(y_result*y_result)+x_margen+x_coord);
- y_dato=((2*x_result*y_result)+y_margen+y_coord);
- x_result=x_dato;
- y_result=y_dato;
- }while(((!(x_result<-2)) && (!(x_result>2))) && ((!(y_result<-2)) && (!(y_result>2)) && (conta_color<num)));
- putpixel(x_pixel+x_ventana,y_pixel+y_ventana,fmod(conta_color,16)+2);
- };
- };
- rompe_bucle:;
- };
-
- }
-
-
- /***************************************************************************/
- /* Contiene la función graba_dibujo que permite la captura de una imagen */
- /***************************************************************************/
-
-
- void graba_dibujo(void)
- {
-
- char
- nombre[13]={'\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'},
- borra_ch[90]; /*Mantienen nombre del fichero y borrado de caracteres.*/
-
- register
- x_imagen=2, /*Coordenadas de la imagen a guardar.*/
- y_imagen=27;
-
- int
- n=0, /*Guarda el caracter pulsado del nombre.*/
- x=375, /*Guarda la posición de los caracteres.*/
- fin=0; /*Gestiona el fin de entrada del nombre.*/
-
- long
- num_bytes; /*Número de bytes que quedan en disco.*/
-
- struct
- dfree disco; /*Espacio en el disco.*/
-
- struct
- ffblk buscar; /*Primer archivo de igual nombre.*/
-
- /***************************************************************************/
-
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," CURSORES-Mover la Ventana INTRO-Grabar Imágen en Disco ESCAPE-Cancelar ");
-
- setcolor(15);
- rectangle(x_imagen,y_imagen,x_imagen+205,y_imagen+205);
- while((tecla_pulsada.i=bioskey(0))!=INTRO)
- {
- if (tecla_pulsada.c==0)
- {
- rectangle(x_imagen,y_imagen,x_imagen+205,y_imagen+205);
- switch(tecla_pulsada.i)
- {
- case CURSOR_ARRIBA:
- if(y_imagen>100)
- y_imagen-=220;
- else
- BEEP_CORTO;
- break;
-
- case CURSOR_DERECHA:
- if(x_imagen<400)
- x_imagen+=210;
- else
- BEEP_CORTO;
- break;
-
- case CURSOR_ABAJO:
- if(y_imagen<100)
- y_imagen+=220;
- else
- BEEP_CORTO;
- break;
-
- case CURSOR_IZQUIERDA:
- if(x_imagen>100)
- x_imagen-=210;
- else
- BEEP_CORTO;
- break;
-
- default:
- putch('\a');
- break;
- };
- rectangle(x_imagen,y_imagen,x_imagen+205,y_imagen+205);
- }
- else
- if(tecla_pulsada.i==ESCAPE)
- break;
- else
- putch('\a');
- };
-
- rectangle(x_imagen,y_imagen,x_imagen+205,y_imagen+205);
- getimage(x_imagen+3,y_imagen+3,x_imagen+202,y_imagen+202,frac);
-
- /***************************************************************************/
-
-
- setcolor(9);
-
- if (tecla_pulsada.i!=ESCAPE)
- {
- putimage(1,465,limpia_texto,0);
- getimage(375,465,383,475,borra_ch);
- outtextxy(1,466," Escriba el nombre del archivo y pulse INTRO: .img ESCAPE-Cancelar");
- setcolor(11);
- do
- {
- tecla_pulsada.i = bioskey(0);
- if ((n < 8)&&(isalnum(tecla_pulsada.c)))
- {
- nombre[n] = tecla_pulsada.c; /* Caracter normal */
- outtextxy(x,466,&nombre[n]);
- n++;
- x+=8;
- }
- else
- {
- switch (tecla_pulsada.i)
- {
- case INTRO: /* Vuelta de carro o escape */
- if (n!=0)
- fin =1;
- else
- putch('\a');
- break;
-
- case ESCAPE:
- fin = 1; /* Fin de entrada */
- break;
-
- case RETROCEDER: /* Espacio-atras */
- if (x>375)
- {
- x-=8;
- putimage(x,465,borra_ch,0);
- nombre[n]='\0';
- n--;
- }
- else
- putch('\a');
- break;
-
- default:
- putch('\a');
- };
- };
- } while (!fin);
-
- if (tecla_pulsada.i==INTRO)
- {
- nombre[n]='.';
- nombre[n+1]='i';
- nombre[n+2]='m';
- nombre[n+3]='g';
- nombre[n+4]='\0';
- if (!findfirst(nombre,&buscar,0))
- {
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," Ya existe un fichero con ese nombre.");
- putch('\a');
- setcolor(9);
- outtextxy(1,466," INTRO-Sobreescribir ESCAPE-Cancelar");
- delay(2000);
- setcolor(11);
- for(;;)
- {
- tecla_pulsada.i=bioskey(0);
- switch(tecla_pulsada.i)
- {
- case INTRO:
- case ESCAPE:
- break;
- default:
- putch('\a');
- };
- if ((tecla_pulsada.i==INTRO)||(tecla_pulsada.i==ESCAPE))
- break;
- };
- }
- else
- {
- getdfree(0,&disco);
- num_bytes=(long)disco.df_avail*(long)disco.df_sclus*(long)disco.df_bsec;
- if (num_bytes<20006)
- {
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," Espacio insuficiente en el disco para guardar una nueva imágen seleccionada.");
- putch('\a');
- delay(2500);
- tecla_pulsada.i=0;
- };
- };
-
- if (tecla_pulsada.i==INTRO)
- {
- num_char=(imagesize(0,0,199,199)/sizeof(char));
- if((archivo=fopen(nombre,"wb"))==NULL)
- salida("No se puede crear el fichero de la imágen seleccionada.\n\n");
- fwrite(frac, sizeof(char) ,num_char,archivo);
- fclose(archivo);
- };
- };
- setcolor(9);
- };
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," F2-Guardar F3-Reponer F5-Elegir Mirilla F8-Grabar Imágen F10-Salir al DOS");
- tecla_pulsada.i=0;
- }
-
-
- /**************************************************************************/
- /**** Función que guarda la situación del programa en un momento dado *****/
- /**************************************************************************/
-
-
- void guarda_config(void)
- {
-
- char
- nombre[13]={'\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'},
- borra_ch[90]; /*Mantienen nombre del fichero y borrado de caracteres.*/
-
- int
- n=0, /*Guarda el caracter pulsado del nombre.*/
- x=375, /*Guarda la posición de los caracteres.*/
- fin=0; /*Gestiona el fin de entrada del nombre.*/
-
- long
- num_bytes; /*Número de bytes que quedan en disco.*/
-
- struct
- dfree disco; /*Espacio en el disco.*/
-
- struct
- ffblk buscar; /*Primer archivo de igual nombre.*/
-
- /***************************************************************************/
-
-
- putimage(1,465,limpia_texto,0);
- getimage(375,465,383,475,borra_ch);
- outtextxy(1,466," Escriba el nombre del archivo y pulse INTRO: .frc ESCAPE-Cancelar");
-
- setcolor(11);
- do
- {
- tecla_pulsada.i = bioskey(0);
- if ((n < 8)&&(isalnum(tecla_pulsada.c)))
- {
- nombre[n] = tecla_pulsada.c; /* Caracter normal */
- outtextxy(x,466,&nombre[n]);
- n++;
- x+=8;
- }
- else
- {
- switch (tecla_pulsada.i)
- {
- case INTRO: /* Vuelta de carro o escape */
- if (n!=0)
- fin = 1;
- else
- putch('\a');
- break;
-
- case ESCAPE:
- fin = 1; /* Fin de entrada */
- break;
-
- case RETROCEDER: /* Espacio-atras */
- if (x>375)
- {
- x-=8;
- putimage(x,465,borra_ch,0);
- nombre[n]='\0';
- n--;
- }
- else
- putch('\a');
- break;
-
- default:
- putch('\a');
- };
- };
- } while (!fin);
-
- if (tecla_pulsada.i==INTRO)
- {
- nombre[n]='.';
- nombre[n+1]='f';
- nombre[n+2]='r';
- nombre[n+3]='c';
- nombre[n+4]='\0';
- if (!findfirst(nombre,&buscar,0))
- {
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," Ya existe un fichero con ese nombre.");
- setcolor(9);
- outtextxy(1,466," INTRO-Sobreescribir ESCAPE-Cancelar");
- putch('\a');
- delay(2000);
- setcolor(11);
- for(;;)
- {
- tecla_pulsada.i=bioskey(0);
- switch(tecla_pulsada.i)
- {
- case INTRO:
- case ESCAPE:
-
- break;
- default:
- putch('\a');
- };
- if ((tecla_pulsada.i==INTRO)||(tecla_pulsada.i==ESCAPE))
- break;
- };
- }
- else
- {
- getdfree(0,&disco);
- num_bytes=((long)disco.df_avail*(long)disco.df_sclus*(long)disco.df_bsec);
- if (num_bytes<120076)
- {
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," Espacio insuficiente en el disco para guardar un nuevo archivo de trabajo.");
- putch('\a');
- delay(2500);
- tecla_pulsada.i=0;
- };
- };
-
- if (tecla_pulsada.i==INTRO)
- {
- num_char=(imagesize(0,0,199,199)/sizeof(char));
- if((archivo=fopen(nombre,"wb"))==NULL)
- salida("No se puede crear el fichero que guarda el trabajo pendiente.\n\n");
-
- fwrite(&bucle, sizeof(int) ,1,archivo);
-
- fwrite(&cuenta_vueltas, sizeof(int) ,1,archivo);
-
- fwrite(&intervalo, sizeof(double) ,1,archivo);
-
- fwrite(&x_margen, sizeof(double) ,1,archivo);
-
- fwrite(&y_margen, sizeof(double) ,1,archivo);
-
- fwrite(&ajuste_punto, sizeof(double) ,1,archivo);
-
- fwrite(&x_ventana, sizeof(int) ,1,archivo);
-
- fwrite(&y_ventana, sizeof(int) ,1,archivo);
-
- getimage(5,30,204,229,frac);
- fwrite(frac, sizeof(char) ,num_char,archivo);
-
- getimage(215,30,414,229,frac);
- fwrite(frac, sizeof(char) ,num_char,archivo);
-
- getimage(425,30,624,229,frac);
- fwrite(frac, sizeof(char) ,num_char,archivo);
-
- getimage(5,250,204,449,frac);
- fwrite(frac, sizeof(char) ,num_char,archivo);
-
- getimage(215,250,414,449,frac);
- fwrite(frac, sizeof(char) ,num_char,archivo);
-
- getimage(425,250,624,449,frac);
- fwrite(frac, sizeof(char) ,num_char,archivo);
-
- fclose(archivo);
- };
- };
- setcolor(9);
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," F2-Guardar F3-Reponer F5-Elegir Mirilla F8-Grabar Imágen F10-Salir al DOS");
- tecla_pulsada.i=0;
- }
-
- /***************************************************************************/
- /****** Función que repone un trabajo grabado anteriormente ****************/
- /***************************************************************************/
-
-
- void repone_config(void)
- {
-
- char
- nombre[13]={'\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'},
- borra_ch[90]; /*Mantienen nombre del fichero y borrado de caracteres.*/
-
- int
- n=0, /*Guarda el caracter pulsado del nombre.*/
- x=375, /*Guarda la posición de los caracteres.*/
- fin=0; /*Gestiona el fin de entrada del nombre.*/
-
- /***************************************************************************/
-
-
- putimage(1,465,limpia_texto,0);
- getimage(375,465,383,475,borra_ch);
- outtextxy(1,466," Escriba el nombre del archivo y pulse INTRO: .frc ESCAPE-Cancelar");
- setcolor(11);
-
- do
- {
- tecla_pulsada.i = bioskey(0);
- if ((n < 8)&&(isalnum(tecla_pulsada.c)))
- {
- nombre[n] = tecla_pulsada.c; /* Caracter normal */
- outtextxy(x,466,&nombre[n]);
- n++;
- x+=8;
- }
- else
- {
- switch (tecla_pulsada.i)
- {
- case INTRO: /* Vuelta de carro o escape */
- if (n!=0)
- fin=1;
- else
- putch('\a');
- break;
-
- case ESCAPE:
- fin = 1; /* Fin de entrada */
- break;
-
- case RETROCEDER: /* Espacio-atras */
- if (x>375)
- {
- x-=8;
- putimage(x,465,borra_ch,0);
- nombre[n]='\0';
- n--;
-
- }
- else
- putch('\a');
- break;
-
- default:
- putch('\a');
- break;
- };
- };
- } while (!fin);
-
- if (tecla_pulsada.i==INTRO)
- {
- nombre[n]='.';
- nombre[n+1]='f';
- nombre[n+2]='r';
- nombre[n+3]='c';
- nombre[n+4]='\0';
-
- num_char=(imagesize(0,0,199,199)/sizeof(char));
-
- if((archivo=fopen(nombre,"rb"))==NULL)
- {
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," El fichero seleccionado no existe o esta dañado, pruebe de nuevo.");
- putch('\a');
- delay(2000);
- }
- else
- {
- setcolor(9);
- rectangle(x_ventana+5,y_ventana+204,x_ventana+9,y_ventana+208);
- setcolor(11);
- fread(&bucle,sizeof(int) ,1,archivo);
-
- fread(&cuenta_vueltas,sizeof(int) ,1,archivo);
-
- fread(&intervalo, sizeof(double) ,1,archivo);
-
- fread(&x_margen, sizeof(double) ,1,archivo);
-
- fread(&y_margen, sizeof(double) ,1,archivo);
-
- fread(&ajuste_punto, sizeof(double) ,1,archivo);
-
- fread(&x_ventana, sizeof(int) ,1,archivo);
-
- fread(&y_ventana, sizeof(int) ,1,archivo);
-
- fread(frac, sizeof(char) ,num_char,archivo);
- putimage(5,30,frac,0);
-
- fread(frac, sizeof(char) ,num_char,archivo);
- putimage(215,30,frac,0);
-
- fread(frac, sizeof(char) ,num_char,archivo);
- putimage(425,30,frac,0);
-
- fread(frac, sizeof(char) ,num_char,archivo);
- putimage(5,250,frac,0);
-
- fread(frac, sizeof(char) ,num_char,archivo);
- putimage(215,250,frac,0);
-
- fread(frac, sizeof(char) ,num_char,archivo);
- putimage(425,250,frac,0);
-
- fclose(archivo);
-
- setcolor(9);
- itoa(bucle,bucle_cad,10);
- putimage(1,8,limpia_texto,0);
- outtextxy(1,9," Imágen nº FRACTAL Javier Trujillo-1992");
- outtextxy(100,9,bucle_cad);
- rectangle(x_ventana+5,y_ventana+204,x_ventana+9,y_ventana+208);
- };
- };
- setcolor(9);
- putimage(1,465,limpia_texto,0);
- outtextxy(1,466," F2-Guardar F3-Reponer F5-Elegir Mirilla F8-Grabar Imágen F10-Salir al DOS");
- tecla_pulsada.i=0;
- }
-
- /***************************************************************************/
- /************** Función que gestiona la salida del programa ****************/
- /***************************************************************************/
-
- void salida(char texto [80]){
-
- restorecrtmode();
- clrscr();
- printf(texto);
- exit(0);
-
- }
-
-
- /***************************************************************************/
- /************************* FIN DE FICHERO ************************/
- /***************************************************************************/